<?xml version="1.0" encoding="utf-8"?>
<!--
                                                                                     
 h       t     t                ::       /     /                     t             / 
 h       t     t                ::      //    //                     t            // 
 h     ttttt ttttt ppppp sssss         //    //  y   y       sssss ttttt         //  
 hhhh    t     t   p   p s            //    //   y   y       s       t          //   
 h  hh   t     t   ppppp sssss       //    //    yyyyy       sssss   t         //    
 h   h   t     t   p         s  ::   /     /         y  ..       s   t    ..   /     
 h   h   t     t   p     sssss  ::   /     /     yyyyy  ..   sssss   t    ..   /     
                                                                                     
	<https://y.st./>
	Copyright © 2016 Alex Yst <mailto:copyright@y.st>

	This program is free software: you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation, either version 3 of the License, or
	(at your option) any later version.

	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with this program. If not, see <https://www.gnu.org./licenses/>.
-->
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<base href="https://y.st./en/weblog/2016/01-January/22.xhtml" />
		<title>Is the oom-killer the problem? &lt;https://y.st./en/weblog/2016/01-January/22.xhtml&gt;</title>
		<link rel="icon" type="image/png" href="/link/CC_BY-SA_4.0/y.st./icon.png" />
		<link rel="stylesheet" type="text/css" href="/link/basic.css" />
		<link rel="stylesheet" type="text/css" href="/link/site-specific.css" />
		<script type="text/javascript" src="/script/javascript.js" />
		<meta name="viewport" content="width=device-width" />
	</head>
	<body>
		<nav>
			<p>
				<a href="/en/">Home</a> |
				<a href="/en/a/about.xhtml">About</a> |
				<a href="/en/a/contact.xhtml">Contact</a> |
				<a href="/a/canary.txt">Canary</a> |
				<a href="/en/URI_research/"><abbr title="Uniform Resource Identifier">URI</abbr> research</a> |
				<a href="/en/opinion/">Opinions</a> |
				<a href="/en/coursework/">Coursework</a> |
				<a href="/en/law/">Law</a> |
				<a href="/en/a/links.xhtml">Links</a> |
				<a href="/en/weblog/2016/01-January/22.xhtml.asc">{this page}.asc</a>
			</p>
			<hr/>
			<p>
				Weblog index:
				<a href="/en/weblog/"><abbr title="American Standard Code for Information Interchange">ASCII</abbr> calendars</a> |
				<a href="/en/weblog/index_ol_ascending.xhtml">Ascending list</a> |
				<a href="/en/weblog/index_ol_descending.xhtml">Descending list</a>
			</p>
			<hr/>
			<p>
				Jump to entry:
				<a href="/en/weblog/2015/03-March/07.xhtml">&lt;&lt;First</a>
				<a rel="prev" href="/en/weblog/2016/01-January/21.xhtml">&lt;Previous</a>
				<a rel="next" href="/en/weblog/2016/01-January/23.xhtml">Next&gt;</a>
				<a href="/en/weblog/latest.xhtml">Latest&gt;&gt;</a>
			</p>
			<hr/>
		</nav>
		<header>
			<h1>Is the oom-killer the problem?</h1>
			<p>Day 00321: Friday, 2016 January 22</p>
		</header>
<p>
	I tracked down the issue with the spider.
	The <a href="https://secure.php.net/manual/en/function.xml-parse-into-struct.php"><code>\xml_parse_into_struct()</code> function</a> is supposed to return 0 on failure and 1 on success, but instead, the script simply terminates upon calling that function.
	Someone on <abbr title="Internet Relay Chat">IRC</abbr> explained that the likely cause was oom-killer, some sort of daemon that kills processes that take too much memory.
	They also explained that when parsing data, three to five times the file&apos;s size is needed in <abbr title="random-access memory">RAM</abbr>.
	However, while this explanation seems exceedingly likely, I cannot find any trace of this happening in the logs.
	Additionally, when I set the file download size limit to four megabytes, the spider still ended up dead.
	Because Web servers can lie about file content types, I want to solve this issue without relying on <code>Content-Type</code> headers, though after I have done so, I want to additionally start taking <code>Content-Type</code> headers into account.
	I think that by modifying my <code>curl_limit</code> class, I can check the <code>Content-Type</code> header before the download has finished.
	I think that I want to make the class a bit more complex, both giving it the option to abort a download based on the <code>Content-Type</code> header and giving it a way to communicate error messages (such as the fact that it had to abort a download and why) to other parts of a script that uses it.
	The name <code>curl_limit</code> will either need to be changed or it will become a artifact title.
</p>
<p>
	I spent most of the day sorting <abbr title="Video Home System">VHS</abbr> cassettes at the local library in an effort to help Cyrus with his Boy Scout project.
	We took any cassette off the shelf if it had not been checked out in over a year so that they can be removed from the inventory and sold.
	It was mostly uneventful, though the librarian was very happy with our work.
	We have not finished though, so we will be back in tomorrow.
</p>
<p>
	Alyssa will be coming to town tonight, though she had not arrived yet at the time that I had written my weblog entry.
	She will also be helping with the Boy Scout project to move progress along.
</p>
<p>
	My <a href="/a/canary.txt">canary</a> still sings the tune of freedom and transparency.
</p>
		<hr/>
		<p>
			Copyright © 2016 Alex Yst;
			You may modify and/or redistribute this document under the terms of the <a rel="license" href="/license/gpl-3.0-standalone.xhtml"><abbr title="GNU&apos;s Not Unix">GNU</abbr> <abbr title="General Public License version Three or later">GPLv3+</abbr></a>.
			If for some reason you would prefer to modify and/or distribute this document under other free copyleft terms, please ask me via email.
			My address is in the source comments near the top of this document.
			This license also applies to embedded content such as images.
			For more information on that, see <a href="/en/a/licensing.xhtml">licensing</a>.
		</p>
		<p>
			<abbr title="World Wide Web Consortium">W3C</abbr> standards are important.
			This document conforms to the <a href="https://validator.w3.org./nu/?doc=https%3A%2F%2Fy.st.%2Fen%2Fweblog%2F2016%2F01-January%2F22.xhtml"><abbr title="Extensible Hypertext Markup Language">XHTML</abbr> 5.1</a> specification and uses style sheets that conform to the <a href="http://jigsaw.w3.org./css-validator/validator?uri=https%3A%2F%2Fy.st.%2Fen%2Fweblog%2F2016%2F01-January%2F22.xhtml"><abbr title="Cascading Style Sheets">CSS</abbr>3</a> specification.
		</p>
	</body>
</html>

